package main

import "fmt"

//  结构体的匿名字段，很局限 不能重复

type Person struct {
	string
	int
}

// 嵌套结构体

type Address struct {
	Province string
	City     string
}

type Person1 struct {
	Name    string
	Age     int
	Gender  string
	Address Address // 嵌套的结构体
}

// 嵌套结构体使用匿名结构体

type Person2 struct {
	Name    string
	Age     int
	Gender  string
	Address // 匿名结构体
}

func main() {
	// 匿名结构体调用
	p1 := Person{"ssc", 18}
	fmt.Println(p1)
	fmt.Println(p1.string, p1.int)

	// 嵌套结构体的使用
	p2 := Person1{
		Age:    18,
		Name:   "ssc",
		Gender: "nan",
		Address: Address{
			Province: "anhui",
			City:     "fuyang",
		},
	}
	fmt.Printf("%#v", p2)
	fmt.Println(p2.Address.Province)

	// 嵌套结构体中 匿名结构体的使用
	p3 := Person2{
		Age:    18,
		Name:   "ssc",
		Gender: "nan",
		Address: Address{
			Province: "安徽",
			City:     "fuyang",
		},
	}
	fmt.Printf("%#v", p3)
	fmt.Println(p3.Address.Province)
	fmt.Println(p3.Province)

}
